package com.idea.errorcode.api;

import org.springframework.http.HttpStatus;

/**
 * @author: 沉香
 * @date: 2025/04/13
 * @description: 异常码基类，自定义异常码必须实现该类
 */
public interface IErrorCode {

    /**
     * 获取异常码
     *
     * @return 异常码
     */
    String getErrorCode();

    /**
     * 获取异常message
     *
     * @return message
     */
    String getMessage();

    /**
     * 获取用户提示语
     *
     * @return 用户提示语
     */
    default String getUserTip() {
        return null;
    }

    /**
     *
     */
    default Integer getCode() {
        return HttpStatus.INTERNAL_SERVER_ERROR.value();
    }

    /**
     *
     */
    default String getMessageKey() {
        String key;
        if (this instanceof Enum) {
            key = ((Enum<?>) this).name();
        }else {
            key = getErrorCode();
        }
        return  key != null ? key.toLowerCase().replace('_', '.') : "";
    }

}
